home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
PROGRAMM
/
PASCAL
/
1463.ZIP
/
DRAW-2D.ARC
/
PROC1.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1986-12-03
|
4KB
|
145 lines
PROCEDURE CLS;
(* PROCEDURE TO CLEAR ENTIRE SCREEN AND HOME CURSOR *)
(* D.J. POWERS [010485] *)
BEGIN
HIRES; (* TURBO-PASCAL PROC *)
GRAPHWINDOW(XPMIN,YPMIN,XPMAX,YPMAX); (* TURBO-PASCAL PROC *)
END;
FUNCTION GENSTR(T:CHAR; N:INTEGER):SCRLINE;
VAR
K:INTEGER;
S:SCRLINE;
BEGIN
S := '';
FOR K := 1 TO N DO
S := S + T;
GENSTR := S;
END;
FUNCTION UPCSTR(S:SCRLINE):SCRLINE;
VAR
K:INTEGER;
X:SCRLINE;
BEGIN
X := '';
FOR K := 1 TO LENGTH(S) DO
X := X + UPCASE(COPY(S,K,1));
UPCSTR := X;
END;
PROCEDURE RING(N:INTEGER);
(* PROCEDURE TO RING THE TERMINAL BELL *)
(* D.J. POWERS [010485] *)
(* INPUT: N = number of rings desired *)
VAR
I:INTEGER;
BEGIN
IF BellCode <> 0 THEN
FOR I:=1 TO N DO
WRITE(CHR(BellCode));
END;
PROCEDURE RING2;
BEGIN
WRITE(CHR(7)); (** HARDWARE DEPENDENT **)
END;
PROCEDURE MOVCUR(LINE,COLUMN:INTEGER);
(* PROCEDURE TO PLACE CURSOR AT SPECIFIED LINE & COLUMN *)
(* D.J. POWERS [010485] *)
BEGIN
GOTOXY(COLUMN,LINE);
END;
FUNCTION ASKCHAR(ROW,COL,UCASE:INTEGER; MSG:SCRLINE; MIN,MAX,DEF:CHAR):CHAR;
VAR
T:CHAR;
BEGIN
MOVCUR(ROW,1);
WRITE(BLKLINE);
MOVCUR(ROW,COL);
WRITE(MSG);
RING(1);
READ(KBD,T);
IF UCASE = 1 THEN T := UPCASE(T);
IF ORD(T) = 13 THEN T := DEF; (* <CR> = 13, NO INPUT *)
IF (MIN <> MAX) AND ((T < MIN) OR (T > MAX)) THEN T := DEF; (* OUT OF RANGE *)
ASKCHAR := T;
MOVCUR(ROW,1);
WRITE(BLKLINE);
END;
FUNCTION ASKSTR(ROW,COL,UCASE:INTEGER; MSG:SCRLINE; MIN,MAX,DEF:SCRLINE):SCRLINE;
VAR
T:SCRLINE;
BEGIN
MOVCUR(ROW,1);
WRITE(BLKLINE);
MOVCUR(ROW,COL);
WRITE(MSG);
RING(1);
READ(T);
IF UCASE = 1 THEN T := UPCSTR(T);
IF LENGTH(T) = 0 THEN T := DEF (* NO INPUT *)
ELSE
IF (MIN <> MAX) AND ((T < MIN) OR (T > MAX)) THEN T := DEF; (* OUT OF RANGE *)
ASKSTR := T;
MOVCUR(ROW,1);
WRITE(BLKLINE);
END;
FUNCTION ASKINT(ROW,COL:INTEGER; MSG:SCRLINE; MIN,MAX,DEF:INTEGER):INTEGER;
VAR
T,CODE:INTEGER;
S:FLDSTR;
BEGIN
MOVCUR(ROW,1);
WRITE(BLKLINE);
MOVCUR(ROW,COL);
WRITE(MSG);
RING(1);
READ(S);
TRIM(S);
IF LENGTH(S) = 0 THEN T := DEF (* NO INPUT *)
ELSE
BEGIN
VAL(S,T,CODE);
IF CODE <> 0 THEN T := DEF (* INVALID INPUT *)
ELSE (* OUT OF RANGE *)
IF (MIN <> MAX) AND ((T < MIN) OR (T > MAX)) THEN T := DEF;
END;
ASKINT := T;
MOVCUR(ROW,1);
WRITE(BLKLINE);
END;
FUNCTION ASKREAL(ROW,COL:INTEGER; MSG:SCRLINE; MIN,MAX,DEF:REAL):REAL;
VAR
T:REAL;
CODE:INTEGER;
S:FLDSTR;
BEGIN
MOVCUR(ROW,1);
WRITE(BLKLINE);
MOVCUR(ROW,COL);
WRITE(MSG);
RING(1);
READ(S);
TRIM(S);
IF LENGTH(S) = 0 THEN T := DEF (* NO INPUT *)
ELSE
BEGIN
VAL(S,T,CODE);
IF CODE <> 0 THEN T := DEF (* INVALID INPUT *)
ELSE (* OUT OF RANGE *)
IF (MIN <> MAX) AND ((T < MIN) OR (T > MAX)) THEN T := DEF;
END;
ASKREAL := T;
MOVCUR(ROW,1);
WRITE(BLKLINE);
END;
PROCEDURE PAUSE;
(* PROCEDURE TO SUSPEND PROGRAM OPERATION *)
(* D.J. POWERS [010485] *)
CONST
MSG = 'Press any key to continue';
VAR
DUMMY:CHAR;
BEGIN
DUMMY := ASKCHAR(24,30,0,MSG,' ',' ',' ');
END;